#pragma once

#include "quote_data.h"
#include <string>
#include <vector>
#include <sstream>
#include <iomanip>

namespace yquote {

class JsonUtils {
public:
    // 提取字符串值
    static std::string extractStringValue(const std::string& json, const std::string& key);
    
    // 提取字符串数组
    static std::vector<std::string> extractStringArray(const std::string& json, const std::string& key);
    
    // 将QuoteData转换为JSON字符串
    static std::string quoteToJson(const QuoteData& quote);
    
    // 将多个QuoteData转换为JSON数组
    static std::string quotesToJson(const std::vector<QuoteData>& quotes);
    
    // 解析订阅请求JSON
    static std::vector<std::string> parseSubscribeRequest(const std::string& json);
    
    // 创建错误响应JSON
    static std::string createErrorResponse(const std::string& error, const std::string& message);
    
    // 创建成功响应JSON
    static std::string createSuccessResponse(const std::string& message);
    
    // 创建心跳消息JSON
    static std::string createHeartbeat();
    
    // 时间戳转换为字符串
    static std::string timestampToString(const std::chrono::system_clock::time_point& tp);

private:
    // 转义JSON字符串
    static std::string escapeJson(const std::string& input);
    
    // 格式化时间戳
    static std::string formatTimestamp(const std::chrono::system_clock::time_point& timestamp);
};

} // namespace yquote 